//
//  WTStatusOriginalView.swift
//  WTSinaWeibo
//
//  Created by  Wellim on 16/6/28.
//  Copyright © 2016年  Wellim. All rights reserved.
//

import UIKit
import SDWebImage
import SnapKit

class WTStatusOriginalView: UIView {

    // 声明一个全局的原创微博底部约束的供我们卸载
    var originalViewBottomConstraint :Constraint?
    
    // 供外界给cell设置数据
    var status: WTStatus?{
        
        didSet{
            // 用户昵称
            nameLabel.text = status?.user?.name
            //用户头像
            headImageView.sd_setImageWithURL(NSURL(string:status?.user?.profile_image_url ?? ""), placeholderImage: UIImage(named:  "avatar_default_big"))
          // 时间和来源后期处理
            /**
             *  来源 赋值
             */
            sourceLabel.attributedText = status?.sourceAttr
            /**
             *  来时间 赋值
             */
            timelabel.text = status?.createdStr
            
            
            
          // 微博内容   
           contentLabel.attributedText = status?.textAttr
           
          
            
          // 认证图片
            vipImageView.image = status?.user?.verifiedImage
            
            // 会员等级
            expiredImageView.image = status?.user?.mbrankImage
            
            /*
             （考虑到cell的复用问题）
             01 先卸载原创微博的底部约束
             02 如果status?.pic_urls.count > 0 代表有配图
             - 显示配图
             - 要先赋值 然后进行约束
             - 原创微博的底部 == 配图的底部 + 10（更新约束）
             反之 <= 0  均是没有配图
             - 隐藏配图
             - 原创微博的底部 == 微博正文的底部 + 10（更新约束）
             */
            //先卸载
           originalViewBottomConstraint?.uninstall()
            // 代表有配图
            if status?.pic_urls?.count > 0 {
                // 显示配图
                pictureView.hidden = false
                //赋值
                 pictureView.pic_urls = status?.pic_urls
                 // 更新约束
                self.snp_makeConstraints { (make) in
                    
                    originalViewBottomConstraint = make.bottom.equalTo(pictureView).offset(StautsMargin).constraint
                }

            }else{
                // 代表没有配图
                // 隐藏配图
                pictureView.hidden = true
                 // 更新约束
                self.snp_makeConstraints { (make) in
                    
                    originalViewBottomConstraint = make.bottom.equalTo(contentLabel).offset(StautsMargin).constraint
                }

            
            
            
            }
            
            
        }
        
        
    }
    
    /*
     
     aaa[马到成功]aaa  最终显示在cell上 aaa表情aaa
    
     aaaa[嘿嘿]bbbb[笑笑] range loc=4 len=4     笑笑  rang
     loc = 12  len 4
     正序行不同 //aaaa表bbbb[笑笑]
     倒序 aaaa[嘿嘿]bbbb表
     */
    func getWeiboAttr(text: String) -> NSMutableAttributedString{
        // 正则匹配格式
        // 通过正则匹配结果
        let resultAttr = NSMutableAttributedString(string: text)
        
        // 定义一个保存模型的数组
        var matchArray: [WTMatchResult] = [WTMatchResult]()
        
        (text as NSString).enumerateStringsMatchedByRegex("\\[[a-zA-Z0-9\\u4e00-\\u9fa5]+\\]") { (count, string, range, _) in
            
            // 转模型保存数组
            let matchRusult = WTMatchResult(srting: string.memory as! String, range: range.memory)
            
            // 保存数据
            matchArray.append(matchRusult)
        
        }
        // 倒序遍历
        for match in matchArray.reverse() {
            
            let emoticon = WTEmoticonTools.sharedEmoticonTools.getSearchEmoticon(match.string)
            // 文本附件
            let att = NSTextAttachment()
            let path = emoticon?.path ?? ""
            let png = emoticon?.png ?? ""
            let name = path + png
            
            // 设置image
            att.image = UIImage(named: name, inBundle: WTEmoticonTools.sharedEmoticonTools.emotionBundle, compatibleWithTraitCollection: nil)
            // 行高
            let lineHeight = UIFont.systemFontOfSize(15).lineHeight
            // 设置bounds
            att.bounds = CGRect(x: 0, y: -4, width: lineHeight, height: lineHeight)
            
            let attr = NSAttributedString(attachment: att)
            
            resultAttr.replaceCharactersInRange(match.range, withAttributedString: attr)
        }
        
        
         return resultAttr
    }
 
    
    
    
//    /*
//     - 微博时间业务逻辑需求
//     - 如果是今年
//     - 如果是今天
//     -  如果小于60秒 显示格式: 刚刚
//     -  如果 s>=60 && s < 60 * 60  显示格式:xx分钟前
//     -  如果 s>= 60*60  显示格式: xx小时前
//     - 如果是昨天
//     -  2016-06-29 12:12:12  显示格式: 昨天 12:12
//     - 如果是其他
//     -  2016-06-12 13:13:13  显示格式: 06月12日 13:13
//     - 如果不是今年
//     - 2015-05-05 10:10:10 显示格式: 2015年05月05日 10:10
//     */
//    // 处理微博时间方法
//   func getWeiboTimeStr(creatAt: String) -> String {
//        //Thu Jun 30 11:21:04 +0800 2016    ---- +0800 时区 z
//        // 时间格式
//        let df = NSDateFormatter()
//        // 格式
//        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
//        // 设置地区 （如果在真机上 可能出现时间不对 需要程序员记得设置）
//        df.locale = NSLocale(localeIdentifier: "en_US")
//        // 微博时间
//        let weiboDate = df.dateFromString(creatAt)!
//        
//        // 判断是否是今年
//        let isThisYear:Bool = getWeiboIsThisYear(weiboDate)
//        
//        // 代表是今年
//        if isThisYear {
//            // 日历类
//            let calendar = NSCalendar.currentCalendar()
//            // 如果是今天
//            if calendar.isDateInToday(weiboDate) {
//                // 秒数差值
//                let s = NSDate().timeIntervalSinceDate(weiboDate)
//                //如果小于60秒 显示格式: 刚刚
//                if s < 60 {
//                    return "刚刚"
//                }else if s >= 60 && s < 60 * 60{
//                 //显示格式:xx分钟前
//                    return "\(Int(s/60))分钟前"
//                
//                }else{
//                  //显示格式: xx小时前
//                  return "\(Int(s/3600))小时前"
//                }
//                
//            }else if calendar.isDateInYesterday(weiboDate){
//              // 昨天 显示格式: 昨天 12:12
//              df.dateFormat = "昨天 HH:mm"
//              return df.stringFromDate(weiboDate)
//            
//            }else{
//            
//              // 其他 显示格式: 06月12日 13:13
//                df.dateFormat = "MM月dd日 HH:mm"
//                return df.stringFromDate(weiboDate)
//            
//            }
//            
//        }else{
//          // 代表不是今年 显示格式: 2015年05月05日 10:10
//           df.dateFormat = "yyyy年MM月dd日 HH:mm"
//            let rusult = df.stringFromDate(weiboDate)
//            return rusult
//        }
//        
//        
//        
//    }
//    
//     // 判断微博时间是否是今年
//    func getWeiboIsThisYear(weiboDate: NSDate) -> Bool {
//        
//        let df = NSDateFormatter()
//        // 设置地区 （如果在真机上 可能出现时间不对 需要程序员记得设置）
//        df.locale = NSLocale(localeIdentifier: "en_US")
//        //格式
//        df.dateFormat = "yyyy"
//        //微博时间
//        let weiboTimeStr = df.stringFromDate(weiboDate)
//        // 当前时间
//        let currentTimeStr = df.stringFromDate(NSDate())
//        // 代表是今年
//        if weiboTimeStr == currentTimeStr {
//            
//            return true
//        }else{
//           // 代表不是今年
//            return false
//        }
//        
//        
//        
//        
//    }
//    
    
    
    
    
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    
    // MARK: - 设置视图
    func setUpUI(){
        
     backgroundColor = UIColor.whiteColor()
        
    // 01- 添加控件
        addSubview(headImageView)
        addSubview(nameLabel)
        addSubview(expiredImageView)
        addSubview(timelabel)
        addSubview(sourceLabel)
        addSubview(vipImageView)
        addSubview(contentLabel)
        addSubview(pictureView)
        
        
    // 02 -添加约束
    // 头像
        headImageView.snp_makeConstraints { (make) in
           make.left.top.equalTo(self).offset(StautsMargin)
           make.size.equalTo(CGSize(width: 35, height: 35)
            )
        }
    // 昵称
        nameLabel.snp_makeConstraints { (make) in
           
            make.top.equalTo(headImageView)
            make.left.equalTo(headImageView.snp_right).offset(StautsMargin)
            
        }
        // 用户等级
        expiredImageView.snp_makeConstraints { (make) in
            make.left.equalTo(nameLabel.snp_right).offset(StautsMargin)
            make.centerY.equalTo(nameLabel)
            
        }
        // 发布时间
        timelabel.snp_makeConstraints { (make) in
            make.leading.equalTo(nameLabel)
            make.bottom.equalTo(headImageView)
            
        }
        
    
        // 来自
        sourceLabel.snp_makeConstraints { (make) in
           make.top.equalTo(timelabel)
           make.left.equalTo(timelabel.snp_right).offset(StautsMargin)
            
        }
        
        // 认证
        vipImageView.snp_makeConstraints { (make) in
           
            make.centerX.equalTo(headImageView.snp_right)
            make.centerY.equalTo(headImageView.snp_bottom)
            
        }
        
        // 微博内容
        contentLabel.snp_makeConstraints { (make) in
            make.left.equalTo(headImageView)
            make.top.equalTo(headImageView.snp_bottom).offset(StautsMargin)
            
        }
        
         // 原创微博配图
        pictureView.snp_makeConstraints { (make) in
             // make.size.equalTo(CGSize(width: 100, height: 100))
           make.left.equalTo(contentLabel)
           make.top.equalTo(contentLabel.snp_bottom).offset(StautsMargin)
            
            
            
        }
        
        // 原创微博
        self.snp_makeConstraints { (make) in
            
      originalViewBottomConstraint = make.bottom.equalTo(pictureView).offset(StautsMargin).constraint
            
            
        }
    
        // 临时放到这里
        nameLabel.text = "昵称"
        timelabel.text = "时间"
        sourceLabel.text = "来自Wellim工作室"
        contentLabel.text = "来自星星的你,我有点surprise,come!!!!来自星星的你,我有点surprise,come!!!!来自星星的你,我有点surprise,come!!!!来自星星的你,我有点surprise,come!!!!来自星星的你,我有点surprise,come!!!!来自星星的你,我有点surprise,come!!!!"
        
        
    }
    
    
    
    // MARK: - 懒加载控件
    
      // 头像
    private lazy var headImageView:UIImageView = UIImageView(imageName: "avatar_default_big")
    // 用户昵称
    private lazy var nameLabel:UILabel = UILabel(textColor: UIColor.darkGrayColor(), textFont: 15)
    
    // 用户等级common_icon_membership_expired
    private lazy var expiredImageView: UIImageView = UIImageView(imageName: "common_icon_membership_expired")
    
    // 发布微博时间
    private lazy var timelabel: UILabel = UILabel(textColor: ThemeColor, textFont: 10)
    
    // 来源
    private lazy var sourceLabel: UILabel = UILabel(textColor: UIColor.grayColor(), textFont: 10)
    
    //vip
    private lazy var vipImageView: UIImageView = UIImageView(imageName: "avatar_vgirl")
   
    // 微博内容
    private lazy var contentLabel: UILabel = UILabel(textColor: UIColor.blackColor(), textFont: 15, maxWidth: kScreenWidth - 2 * StautsMargin)
    
    // 原创微博配图
    private lazy var pictureView: WTPictureView = WTPictureView()
}
